↳ Prolog
↳ PrologToPiTRSProof
flat_in(tree(X, tree(Y, YS1, YS2), XS), ZS) → U3(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
flat_in(tree(X, niltree, XS), cons(X, YS)) → U1(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
U1(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U2(X, XS, YS, flat_in(ZS, YS))
flat_in(niltree, nil) → flat_out(niltree, nil)
U2(X, XS, YS, flat_out(ZS, YS)) → flat_out(tree(X, niltree, XS), cons(X, YS))
U3(X, Y, YS1, YS2, XS, ZS, flat_out(tree(Y, YS1, tree(X, YS2, XS)), ZS)) → flat_out(tree(X, tree(Y, YS1, YS2), XS), ZS)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
flat_in(tree(X, tree(Y, YS1, YS2), XS), ZS) → U3(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
flat_in(tree(X, niltree, XS), cons(X, YS)) → U1(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
U1(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U2(X, XS, YS, flat_in(ZS, YS))
flat_in(niltree, nil) → flat_out(niltree, nil)
U2(X, XS, YS, flat_out(ZS, YS)) → flat_out(tree(X, niltree, XS), cons(X, YS))
U3(X, Y, YS1, YS2, XS, ZS, flat_out(tree(Y, YS1, tree(X, YS2, XS)), ZS)) → flat_out(tree(X, tree(Y, YS1, YS2), XS), ZS)
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → U31(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)), ZS)
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → U11(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → RIGHT_IN(tree(X, niltree, XS), ZS)
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U21(X, XS, YS, flat_in(ZS, YS))
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → FLAT_IN(ZS, YS)
flat_in(tree(X, tree(Y, YS1, YS2), XS), ZS) → U3(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
flat_in(tree(X, niltree, XS), cons(X, YS)) → U1(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
U1(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U2(X, XS, YS, flat_in(ZS, YS))
flat_in(niltree, nil) → flat_out(niltree, nil)
U2(X, XS, YS, flat_out(ZS, YS)) → flat_out(tree(X, niltree, XS), cons(X, YS))
U3(X, Y, YS1, YS2, XS, ZS, flat_out(tree(Y, YS1, tree(X, YS2, XS)), ZS)) → flat_out(tree(X, tree(Y, YS1, YS2), XS), ZS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → U31(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)), ZS)
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → U11(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → RIGHT_IN(tree(X, niltree, XS), ZS)
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U21(X, XS, YS, flat_in(ZS, YS))
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → FLAT_IN(ZS, YS)
flat_in(tree(X, tree(Y, YS1, YS2), XS), ZS) → U3(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
flat_in(tree(X, niltree, XS), cons(X, YS)) → U1(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
U1(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U2(X, XS, YS, flat_in(ZS, YS))
flat_in(niltree, nil) → flat_out(niltree, nil)
U2(X, XS, YS, flat_out(ZS, YS)) → flat_out(tree(X, niltree, XS), cons(X, YS))
U3(X, Y, YS1, YS2, XS, ZS, flat_out(tree(Y, YS1, tree(X, YS2, XS)), ZS)) → flat_out(tree(X, tree(Y, YS1, YS2), XS), ZS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → U11(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)), ZS)
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → FLAT_IN(ZS, YS)
flat_in(tree(X, tree(Y, YS1, YS2), XS), ZS) → U3(X, Y, YS1, YS2, XS, ZS, flat_in(tree(Y, YS1, tree(X, YS2, XS)), ZS))
flat_in(tree(X, niltree, XS), cons(X, YS)) → U1(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
U1(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → U2(X, XS, YS, flat_in(ZS, YS))
flat_in(niltree, nil) → flat_out(niltree, nil)
U2(X, XS, YS, flat_out(ZS, YS)) → flat_out(tree(X, niltree, XS), cons(X, YS))
U3(X, Y, YS1, YS2, XS, ZS, flat_out(tree(Y, YS1, tree(X, YS2, XS)), ZS)) → flat_out(tree(X, tree(Y, YS1, YS2), XS), ZS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
FLAT_IN(tree(X, niltree, XS), cons(X, YS)) → U11(X, XS, YS, right_in(tree(X, niltree, XS), ZS))
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS), ZS) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)), ZS)
U11(X, XS, YS, right_out(tree(X, niltree, XS), ZS)) → FLAT_IN(ZS, YS)
right_in(tree(X, XS1, XS2), XS2) → right_out(tree(X, XS1, XS2), XS2)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Rewriting
U11(X, right_out(ZS)) → FLAT_IN(ZS)
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS)) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)))
FLAT_IN(tree(X, niltree, XS)) → U11(X, right_in(tree(X, niltree, XS)))
right_in(tree(X, XS1, XS2)) → right_out(XS2)
right_in(x0)
FLAT_IN(tree(X, niltree, XS)) → U11(X, right_out(XS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS)) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)))
U11(X, right_out(ZS)) → FLAT_IN(ZS)
FLAT_IN(tree(X, niltree, XS)) → U11(X, right_out(XS))
right_in(tree(X, XS1, XS2)) → right_out(XS2)
right_in(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
U11(X, right_out(ZS)) → FLAT_IN(ZS)
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS)) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)))
FLAT_IN(tree(X, niltree, XS)) → U11(X, right_out(XS))
right_in(x0)
right_in(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ UsableRulesReductionPairsProof
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS)) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)))
U11(X, right_out(ZS)) → FLAT_IN(ZS)
FLAT_IN(tree(X, niltree, XS)) → U11(X, right_out(XS))
No rules are removed from R.
U11(X, right_out(ZS)) → FLAT_IN(ZS)
FLAT_IN(tree(X, niltree, XS)) → U11(X, right_out(XS))
POL(FLAT_IN(x1)) = 1 + 2·x1
POL(U11(x1, x2)) = 2 + 2·x1 + 2·x2
POL(niltree) = 1
POL(right_out(x1)) = x1
POL(tree(x1, x2, x3)) = 2·x1 + x2 + x3
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ RuleRemovalProof
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS)) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)))
FLAT_IN(tree(X, tree(Y, YS1, YS2), XS)) → FLAT_IN(tree(Y, YS1, tree(X, YS2, XS)))
POL(FLAT_IN(x1)) = 2·x1
POL(tree(x1, x2, x3)) = 2 + 2·x1 + 2·x2 + x3
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ RuleRemovalProof
↳ QDP
↳ PisEmptyProof